var fs = require('fs')


var dbPath = './db.json'

//获取所有学生列表
exports.findall = function (callback) {
    fs.readFile(dbPath, 'utf8', function (err, data) {
        if (err) {
            return callback(err)
        }
        callback(null, JSON.parse(data).zl)
    })
}

//新建学生信息
exports.setNew = function(student,callback){
    fs.readFile(dbPath,'utf8',function (err,data) {
        if (err) {
            return callback(err)
        }
        var zl = JSON.parse(data).zl
        console.log(typeof student)

        student.id = zl[zl.length - 1].id + 1
        console.log(student.id)


         zl.push(student)

        var file = JSON.stringify({
            zl:zl
        })

        fs.writeFile(dbPath,file,function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}
//通过id查找信息
exports.findById = function (id, callback) {
    //读取文件
    fs.readFile(dbPath, 'utf8', function (err, data) {
        if (err) {
            return callback(err)
        }

        //将读取的data转换为object类型;并读取zl
        var zl = JSON.parse(data).zl

        //通过JavaScript中的find方法放回id相对应的数据;
        //ret是object类型
        var ret = zl.find(function (item) {
            return item.id === parseInt(id)
        })
        //通过回调函数返回ret
        callback(null, ret)
    })
}

//通过id修改数据
exports.updateById = function(student,callback) {
    //读入数据

    fs.readFile(dbPath,'utf8',function (err, data) {
        if (err) {
            return callback(err)
        }
        // console.log('student:',student)

        //将读取的db.json数据栓化为对象
        var zl = JSON.parse(data).zl

        //把request.body的id转换为数字类型
        student.id = parseInt(student.id)

        //找出id与之对应的数据
        //不能修改id数据；id修改return item.id === student.id就会报错
        var shuju = zl.find(function (item) {
            return item.id === student.id
        })
        // console.log('shuju:',shuju)

        //不能将html中的id表单删去，但是可以隐藏起来 type="hidden"
        //将表中的数据zl替换进去;循环赋值
        for(var key in student){
            shuju[key] = student[key]
        }

        //将对象数据转化为字符串
        var file = JSON.stringify({
            zl:zl
        })
        console.log('file:',file)
        //将处理过的数据存入到db.json中
        fs.writeFile(dbPath,file,function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}

//删除学生资料
exports.delete = function (id,callback) {
    //先读入数据
    fs.readFile(dbPath,function (err, data) {
        if (err) {
            return callback(err)
        }

        //获取db.json对象
        var zl = JSON.parse(data).zl

        var deleteID  = zl.findIndex(function (item) {
            return item.id === parseInt(id)
        })

        //删除zl中索引为deleteID的数据
        //splice（删除元素下标，删除个数）
        var after = zl.splice(deleteID,1)

        //将对象转换为字符串
        var file = JSON.stringify({
            zl:zl
        })

        fs.writeFile(dbPath,file,function (err) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}


